﻿// 207 单调队列.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <deque>
#include <algorithm>



using namespace std;

/*
http://oj.daimayuan.top/course/5/problem/167
有n个生物，第i个生物会在第i到第ai(i≤ai≤n)天出现，它的攻击力为bi。
其中对于所有i(1≤i<n)，满足ai≤ai+1。
请输出每天出现的生物的攻击力的最大值。

输入格式
第一行一个整数n。

接下来n行，每行两个整数ai,bi。

输出格式
一共n行，每行一个数表示答案。

第i个整数表示第i天出现的生物的攻击力的最大值。

样例输入
5
3 8
4 9
5 1
5 6
5 1
样例输出
8
9
9
9
6
数据规模
对于所有数据，保证1≤n≤105,1≤bi≤105。
*/

const int N = 100010;
struct MONSTER {
	int attack, end;
}mon[N];
int n;

int main()
{
	cin >> n;

	for (int i = 1; i <= n; i++) {
		int a, b;
		cin >> a >> b;
		mon[i].end = a;
		mon[i].attack = b;
	}
	deque<int> q;
	for (int i = 1; i <= n; i++) {
		while (!q.empty() && mon[q.front()].end < i) q.pop_front();
		while (!q.empty() && mon[q.back()].attack < mon[i].attack) q.pop_back();
		q.push_back(i);
		cout << mon[q.front()].attack << endl;
	}


	return 0;
}
 